/**
 * 
 */
package com.ms.game.itembox;

/**
 * 角色道具變更行為列舉
 * <p>
 * id 的數值為正負號一組, 正值代表因為 A 行為獲得道具, 負值代表因為 A 行為減少道具<br>
 * 如果 A 行為只有增加道具不會減少道具, 那就只要訂出正值的項目就好, 負值的號碼保留起來不讓其他項目使用
 * 
 * @author TW15010
 */
public enum ItemChangeWay {
	// 增加道具的行為, id 必須大於 0 =============================================
	/** 增加測試 */
	ADD_TEST(1, "增加測試"),

	/** 增加道具命令 */
	ADD_COMMAND(2, "增加道具命令"),

	/** 輸入邀請碼獲得道具 */
	ADD_INVITE_CODE(3, "輸入邀請碼獲得道具"),

	ADD_BY_GMTOOL(4,"錢街客服贈與"),
	
	/** 送禮物扣道具 */
	ADD_SEND_GIFT(10, "收道禮物"),
	
	/** 禮物退回 */
	ADD_GIFT_RETURN(11, "禮物退回"),
	
	/** 過時禮物退回 */
	ADD_GIFT_TIME_OUT_RETURN(12, "過時禮物退回"),

	/** 使用禮包獲得 */
	ADD_USE_BONUS_PACK(13, "使用禮包獲得"),
	
	/** 連續登陸獎勵 */
	ADD_CONTINUE_REWARD(14, "連續登陸獎勵"),

	/** 遊戲中獲得道具 */
	ADD_IN_GAME(17, "遊戲中獲得道具"),
	
	/**每日任務獎勵*/
	ADD_MISSION_REWARD(18, "每日任務獎勵"),
	
	ADD_OPEN_LEVEL_BOX(19, "開啟等級寶箱獲得"),
	
	ADD_CREATE_PLAYER(20, "創角獲得"),
	
	ADD_OPEN_GIFT_BOX(22, "開啟補償寶箱獲得"),
	
	ADD_BUY_FNBO_VOUCHER(23,"購買翻寶券"),
	
	ADD_DAILY_LOGIN_SEND_FNBO_VOUCHER(24, "每日登入送翻寶券"),
	
	ADD_IN_FNBO(25, "樂翻寶中獲得"),

	// 減少道具的行為, id 必須小於 0 =============================================
	/** 減少測試 */
	SUB_TEST(-1, "減少測試"),

	/** 增加道具命令 */
	SUB_COMMAND(-2, "扣除道具命令"),

	/** 使用道具扣除 */
	SUB_USE_ITEM(-3, "使用道具扣除"),

	/** GM扣除**/
	SUB_BY_GMTOOL(-4,"錢街GM扣除"),
	
	/** 送禮物扣道具 */
	SUB_SEND_GIFT(-10, "寄送禮物"),

	/** 道具ID異常被回收 */
	SUB_INVALID_ITEM_ID(-15, "道具ID異常被回收"),

	/** 道具超過精煉齊備回收 */
	SUB_ITEM_REFINE_TIME_EXPIRE(-16, "超過精煉期回收"),
	
	/** 過期回收*/
	SUB_TIME_EXPIRE(-21,"過期"),
	
	SUB_IN_FNBO(-25, "樂翻寶中扣除");

	/**
	 * 代表數值
	 */
	private int id;

	/**
	 * 說明
	 */
	private String desc;

	/**
	 * @param id
	 *            代表數值
	 * @param desc
	 *            說明
	 */
	private ItemChangeWay(int id, String desc) {
		this.id = id;
		this.desc = desc;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getDesc() {
//		return desc;
		return this.name();//20160518 改成回傳enum.name()
	}

	public void setDesc(String desc) {
		this.desc = desc;
	}

	/**
	 * 是否為增加值
	 * 
	 * @return true 是<br>
	 *         false 否
	 */
	public boolean isAdd() {
		return (id > 0);
	}

	/**
	 * 是否為減少值
	 * 
	 * @return true 是<br>
	 *         false 否
	 */
	public boolean isSubtract() {
		return (id < 0);
	}
	
	/**
	 * 是否為寄送禮物後收到道具的行為
	 * 
	 * @return
	 */
	public boolean isSendGiftRecvItem() {
		if (this.equals(ADD_SEND_GIFT)) {
			return true;
		}

		if (this.equals(ADD_GIFT_RETURN)) {
			return true;
		}

		if (this.equals(ADD_GIFT_TIME_OUT_RETURN)) {
			return true;
		}

		return false;
	}
}
